package com.aspose.cells;

abstract class zk extends zo {
   private char d;
   private char e;
   private zbmn f;
   private zht[][] g;
   private int[][] h;
   private boolean[] i;
   private int[] j;
   private int[] k;
   private int[] l;
   private int[][] m;
   private int n;
   private int o;
   private int p;
   private int[] q;
   private int[] r;

   public zk(zhh var1, String var2) {
      super(var1, var2);
   }

   protected abstract char[] a(char[] var1, int[] var2, int[] var3);

   protected abstract void a(char[] var1, int var2, int var3, zlv var4);

   protected char c() {
      return this.d;
   }

   public void a(zxu var1, double var2, zxz var4) {
      this.f.a(var1, var2, var4);
      this.a(var4.g(), var1, var4);
   }

   public void a(char[] var1, zxu var2, zxz var3) {
      this.q[0] = 0;
      if (var1.length > 0 && var1[0] == '-') {
         this.r[0] = 1;
      } else {
         this.r[0] = 0;
      }

      this.q[this.q.length - 1] = var1.length;
      this.r[this.q.length - 1] = 0;
      var1 = this.a(var1, this.q, this.r);
      byte var4 = 0;
      int var5 = 0;
      int[] var6 = null;
      if (this.o > 0) {
         var6 = new int[this.o];
      }

      char[] var7 = null;
      int var8 = 0;
      int var9 = 0;
      int var10;
      int var11;
      int var12;
      int[] var13;
      int var14;
      int var16;
      int var17;
      int var18;
      if (this.o + this.p > 0) {
         var13 = null;

         label349:
         for(var14 = 0; var14 < this.m.length; ++var14) {
            int[] var15 = this.m[var14];
            if (var15 != null) {
               var10 = this.q[var14] + this.r[var14];
               var11 = this.q[var14 + 1];
               var12 = var11 - var10;
               if (this.i[var14]) {
                  for(var17 = var15.length - 1; var17 > -1; --var17) {
                     var16 = var15[var17];
                     if (var16 < 0) {
                        var16 = -var16 - 1;
                     }

                     if (var16 >= var12) {
                        if (var7 == null) {
                           var7 = new char[var1.length + (this.c.g() ? this.o + this.p + 1 + (this.o + this.p - 1) / 3 : this.o + this.p)];
                           System.arraycopy(var1, 0, var7, 0, var10);
                           var8 = var10;
                           var13 = new int[this.q.length];
                           System.arraycopy(this.q, 0, var13, 0, this.q.length);
                        } else {
                           System.arraycopy(var1, var9, var7, var8, var10 - var9);
                           var8 += var10 - var9;
                        }

                        var18 = 0;
                        int var19 = 0;
                        int var20;
                        if (this.c.g()) {
                           var20 = var10 + var19;

                           label323:
                           while(true) {
                              while(true) {
                                 if (var20 >= var11 || var1[var20] == this.e) {
                                    break label323;
                                 }

                                 if (var1[var20] >= '0' && var1[var20] <= '9') {
                                    ++var19;
                                    if (var19 > 2) {
                                       var18 = 1;
                                       var19 = 0;
                                       break label323;
                                    }

                                    ++var20;
                                 } else {
                                    ++var20;
                                 }
                              }
                           }

                           var18 += (var17 + var19) / 3;
                        }

                        for(var20 = var14 + 1; var20 < this.q.length; ++var20) {
                           var13[var20] += var17 + 1 + var18;
                        }

                        for(var20 = 0; var20 <= var17; ++var20) {
                           if (var15[var20] < 0) {
                              var7[var8] = (char)var4;
                              var6[var5] = var8;
                              ++var5;
                           } else {
                              var7[var8] = '0';
                           }

                           ++var8;
                           if (this.c.g() && var18 > 0 && (var17 - var20 + var19) % 3 == 0) {
                              if (var15[var20] < 0) {
                                 var7[var8] = (char)var4;
                                 var6[var5] = var8;
                                 ++var5;
                              } else {
                                 var7[var8] = this.e;
                              }

                              ++var8;
                              --var18;
                           }
                        }

                        System.arraycopy(var1, var10, var7, var8, var12);
                        var9 = var11;
                        var8 += var12;
                        break;
                     }
                  }
               } else {
                  for(var17 = 0; var17 < var15.length; ++var17) {
                     var16 = var15[var17];
                     if (var16 < 0) {
                        var16 = -var16 - 1;
                     }

                     if (var16 >= var12) {
                        if (var7 == null) {
                           var7 = new char[var1.length + this.o + this.p];
                           System.arraycopy(var1, 0, var7, 0, var11);
                           var8 = var11;
                           var13 = new int[this.q.length];
                           System.arraycopy(this.q, 0, var13, 0, this.q.length);
                        } else {
                           var12 = var11 - var9;
                           System.arraycopy(var1, var9, var7, var8, var12);
                           var8 += var12;
                        }

                        var9 = var11;
                        var17 = var15.length - var17;

                        for(var18 = var14 + 1; var18 < this.q.length; ++var18) {
                           var13[var18] += var17;
                        }

                        var17 = var15.length - var17;

                        while(true) {
                           if (var17 >= var15.length) {
                              continue label349;
                           }

                           if (var15[var17] < 0) {
                              var7[var8] = (char)var4;
                              var6[var5] = var8;
                              ++var5;
                           } else {
                              var7[var8] = '0';
                           }

                           ++var8;
                           ++var17;
                        }
                     }
                  }
               }
            }
         }

         if (var7 != null) {
            System.arraycopy(var1, var9, var7, var8, var1.length - var9);
            var8 += var1.length - var9;
            var1 = new char[var8];
            System.arraycopy(var7, 0, var1, 0, var8);
            this.q = var13;
         }
      }

      if (var5 > 0) {
         com.aspose.cells.b.a.za.a((int[])var6, 0, var5);
      }

      int var22;
      if (this.n > 0 || this.l != null) {
         var7 = new char[var1.length + this.n];
         if (this.l != null) {
            var3.a(this.l);
         }

         int var21 = 0;
         var8 = 0;
         var9 = 0;

         for(var14 = 0; var14 < this.g.length; ++var14) {
            if (this.g[var14] != null) {
               var10 = this.q[var14] + this.r[var14];
               var11 = this.q[var14 + 1];
               var12 = var10 - var9;
               if (var12 > 0) {
                  System.arraycopy(var1, var9, var7, var8, var12);
                  var9 = var10;
                  var8 += var12;
               }

               zxz var23;
               char[] var24;
               if (this.i[var14]) {
                  if (this.k != null) {
                     var21 = this.k[var14] - 1;
                  }

                  var8 += this.j[var14] + var11 - var10;
                  var9 = var11;

                  for(var22 = this.g[var14].length - 1; var22 > -1; --var22) {
                     var12 = Math.min(var9 - var10, this.h[var14][var22]);
                     if (var12 > 0) {
                        var8 -= var12;
                        var9 -= var12;
                        System.arraycopy(var1, var9, var7, var8, var12);
                     }

                     var23 = this.g[var14][var22].a((zxu)var2, 14, (Object)0.0D);
                     if (!var23.c()) {
                        var24 = var23.g();
                        var8 -= var24.length;
                        System.arraycopy(var24, 0, var7, var8, var24.length);
                        if (var5 > 0) {
                           label237:
                           for(var18 = 0; var18 < var5; ++var18) {
                              if (var6[var18] >= var9) {
                                 while(true) {
                                    if (var18 >= var5) {
                                       break label237;
                                    }

                                    var6[var18] += var24.length;
                                    ++var18;
                                 }
                              }
                           }
                        }
                     }

                     var12 = var23.j();
                     if (var12 > 0) {
                        for(var17 = var12 - 1; var17 > -1; --var17) {
                           var3.a(var21, var8 + var23.b(var17));
                           --var21;
                        }
                     }
                  }

                  var12 = var9 - var10;
                  if (var12 > 0) {
                     var8 -= var12;
                     var9 -= var12;
                     System.arraycopy(var1, var9, var7, var8, var12);
                  }

                  var8 += this.j[var14] + var11 - var10;
                  var9 = var11;
                  if (this.k != null) {
                     var21 = this.k[var14];
                  }
               } else {
                  label273:
                  for(var22 = 0; var22 < this.g[var14].length; ++var22) {
                     var12 = Math.min(var11 - var9, this.h[var14][var22]);
                     if (var12 > 0) {
                        System.arraycopy(var1, var9, var7, var8, var12);
                        var8 += var12;
                        var9 += var12;
                     }

                     var23 = this.g[var14][var22].a((zxu)var2, 14, (Object)0.0D);
                     var12 = var23.j();
                     if (var12 > 0) {
                        for(var17 = 0; var17 < var12; ++var17) {
                           var3.a(var21, var8 + var23.b(var17));
                           ++var21;
                        }
                     }

                     if (!var23.c()) {
                        var24 = var23.g();
                        System.arraycopy(var24, 0, var7, var8, var24.length);
                        var8 += var24.length;
                        if (var5 > 0) {
                           for(var18 = 0; var18 < var5; ++var18) {
                              if (var6[var18] >= var9) {
                                 while(true) {
                                    if (var18 >= var5) {
                                       continue label273;
                                    }

                                    var6[var18] += var24.length;
                                    ++var18;
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
         }

         var12 = var1.length - var9;
         System.arraycopy(var1, var9, var7, var8, var12);
         var1 = var7;
      }

      if (var5 > 0) {
         var7 = new char[var1.length - var5];
         if (this.l != null) {
            var13 = new int[var5 + this.l.length];
            var3.a(var13);
            var14 = 0;
            var22 = 0;
            var9 = 0;
            var8 = 0;
            var16 = 0;

            while(true) {
               if (var16 >= var5) {
                  while(var22 < this.l.length) {
                     var13[var14] = this.l[var22];
                     var3.a(var14, var3.b(var14) - var5);
                     ++var14;
                     ++var22;
                  }

                  var12 = var1.length - var9;
                  System.arraycopy(var1, var9, var7, var8, var12);
                  break;
               }

               while(var22 < this.l.length) {
                  var13[var14] = this.l[var22];
                  var17 = var3.b(var14);
                  if (var17 > var6[var16]) {
                     break;
                  }

                  var3.a(var14, var17 - var16);
                  ++var14;
                  ++var22;
               }

               var12 = var6[var16] - var9;
               System.arraycopy(var1, var9, var7, var8, var12);
               var8 += var12;
               var9 += var12 + 1;
               var13[var14] = zxz.a(false, var6[var16] - var16, var2.c());
               ++var14;
               ++var16;
            }
         } else {
            var13 = new int[var5];
            var3.a(var13);
            var9 = 0;
            var8 = 0;

            for(var14 = 0; var14 < var5; ++var14) {
               var12 = var6[var14] - var9;
               System.arraycopy(var1, var9, var7, var8, var12);
               var8 += var12;
               var9 += var12 + 1;
               var13[var14] = zxz.a(false, var6[var14] - var14, var2.c());
            }

            var12 = var1.length - var9;
            System.arraycopy(var1, var9, var7, var8, var12);
         }

         var1 = var7;
      }

      var3.a(2, (char[])var1);
   }

   protected void a(char[] var1, int var2, int var3) {
      this.a(this.a.b());
      StringBuilder var4 = new StringBuilder(var3 - var2);
      super.d(var1, var2, var3, var4);
      var1 = com.aspose.cells.b.a.zr.a(var4).toCharArray();
      var4.setLength(0);
      byte var12 = 0;
      var3 = var1.length;
      StringBuilder var5 = new StringBuilder(var3 - var12);
      zlv var6 = new zlv(this.a, var4, var5);
      this.a(var1, var12, var3, var6);
      this.g = var6.e();
      if (this.g != null) {
         this.h = var6.f();
         this.j = var6.g();
         this.n = var6.d();
         this.i = var6.h();
         this.l = var6.i();
         this.k = var6.j();
         this.m = var6.k();

         int var7;
         int[] var8;
         int var9;
         for(var7 = 0; var7 < this.h.length; ++var7) {
            var8 = this.h[var7];
            if (var8 != null) {
               if (this.i[var7]) {
                  for(var9 = 1; var9 < var8.length; ++var9) {
                     var8[var9 - 1] -= var8[var9];
                  }
               } else {
                  for(var9 = var8.length - 1; var9 > 0; --var9) {
                     var8[var9] -= var8[var9 - 1];
                  }
               }
            }
         }

         if (this.m != null) {
            this.o = 0;
            this.p = 0;

            for(var7 = 0; var7 < this.m.length; ++var7) {
               if (this.m[var7] != null) {
                  var8 = this.m[var7];
                  var9 = var8.length;

                  for(int var10 = 0; var10 < var9; ++var10) {
                     int var11 = var8[var10];
                     if (var11 < 0) {
                        ++this.o;
                     } else {
                        ++this.p;
                     }
                  }
               }
            }
         }

         this.q = new int[this.g.length + 1];
         this.r = new int[this.q.length];
      }

      this.f = new zbmn(this.a, com.aspose.cells.b.a.zr.a(var5));
   }

   protected int b(char[] var1, int var2, int var3, zlv var4) {
      switch(var1[var2]) {
      case '#':
         var4.a();
         var4.c().append(var1[var2]);
         break;
      case ',':
         if (this.c.c() < 0) {
            var4.c().append(',');
         } else {
            var4.b().append(',');
         }
         break;
      case '.':
         if (this.c.c() < 0) {
            var4.a(true, var4.c().length());
            this.c.b(var4.c().length());
            var4.c().append('.');
         } else {
            var4.b().append(this.d);
         }
         break;
      case '0':
         var4.a(true);
         var4.a();
         var4.c().append('#');
         break;
      case '?':
         var4.a(false);
         var4.a();
         var4.c().append('#');
         break;
      case '[':
         return this.a.a(var1, var2, var3, var4.b(), false);
      default:
         return this.b(var1, var2, var3, var4.b());
      }

      return var2 + 1;
   }

   protected void a(zxx var1) {
      this.d = var1.f().d();
      this.e = var1.f().e();
   }
}
